#ifndef DEVICE_HPP
#define DEVICE_HPP

#include <kieper/Address.hpp>
#include <kieper/Message.hpp>

#include <string>

#include <boost/utility.hpp>
#include <boost/cstdint.hpp>
#include <boost/scoped_ptr.hpp>

namespace kieper {
class Address;
class Connector;

class Device : private boost::noncopyable {
public:
    Device(const std::string& handle, uint16_t id, Address* address,
      Connector& connector);
    ~Device();
    void call(uint32_t msgType);
protected:
private:
    const std::string handle_;
    const uint16_t id_;
    boost::scoped_ptr<Address> address_;
    Connector& connector_;
};
}

#endif
